function parse (str) {
  let value
  try {
    // 将 str 转换为对象
    value = JSON.parse(str)
  } catch {
    // 如果异常则设置为 null
    value = null
  }
  return value
}

function stringify (obj) {
  let value
  try {
    // 将 obj 转换为文本
    value = JSON.stringify(obj)
  } catch {
    // 如果异常则设置为 null
    value = null
  }
  return value
}

export default function useLocalStorage () {
  // 将对象转换成文本保存在 localStorage 中
  function setItem (key, value) {
    value = stringify(value)
    window.localStorage.setItem(key, value)
  }

  // 将文本转换成对象保存在 localStorage 中
  function getItem (key) {
    let value = window.localStorage.getItem(key)
    if (value) {
      value = parse(value)
    }
    return value
  }

  return {
    setItem,
    getItem
  }
}